package cn.ht.JVM.heap;

/**
 * 演示通过代码获取计算机核数
 */
public class demo1 {

    public static void main(String[] args) {

        //获取计算机核数
        int i = Runtime.getRuntime().availableProcessors();
        System.out.println("本地计算机核数为："+i);
        //返回java虚拟机试图使用的最大内存量。
        long l = Runtime.getRuntime().maxMemory();
        System.out.println("-Xmx:MAX_MEMORY = " +l+"（字节）,"+(l/(double)1024/1024+"MB"));
        //返回java虚拟机中的内存总量
        long totalMemory = Runtime.getRuntime().totalMemory();
        System.out.println("-Xms:TOTAL_MEMORY = " +totalMemory+"（字节）,"+(totalMemory/(double)1024/1024+"MB"));
        //产生OOM，方案1：new大对象(此处我们设置的大小为1024Mb，我们new一个初始长度为2048Mb的数组)
//        String[] arr = new String[40*1024*1024];
        //产生OOM，方按2：不停new对象，String字符串+=是会不停在堆内存中new新对象的，因此我们可以利用这个来撑爆heap、
        String str = "A";
        int num = 0;
        while (true){
            str += str+ (num++)+"";
        }

    }
}
